perm filename PARLOG[E83,JMC] blob
sn#723520 filedate 1983-08-23 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 Parlog Seminar
C00005 ENDMK
Cā;
Parlog Seminar
Keith Clark will give a seminar on Parlog Thursday, Sept. 1 at 3 p.m in
Room 252 MJH.
PARLOG: A PARALLEL LOGIC PROGRAMMING LANGUAGE
Keith L. Clark
ABSTRACT
PARLOG is a logic programming language in the sense that nearly every
definition and query can be read as a sentence of predicate logic. It differs
from PROLOG in incorporating parallel modes of evaluation. For reasons of
efficient implementation, it distinguishes and separates and-parallel and
or-parallel evaluation.
PARLOG relations are divided into two types: and-relations and
or-relations. A sequence of and-relation calls can be evaluated in parallel
with shared variables acting as communication channels. Only one solution
to each call is computed.
A sequence of or-relation calls is evaluated sequentially but all the
solutions are found by a parallel exploration of the different evaluation
paths. A set constructor provides the main interface between and-relations
and or-relations. This wraps up all the solutions to a sequence of or-relation
calls in a list. The solution list can be concurrently consumed by an
and-relation call.
The and-parallel definitions of relations that will only be used in a
single functional mode can be given using conditional equations. This gives
PARLOG the syntactic convenience of functional expressions when non-determinism is
not required. Functions can be invoked eagerly or lazily; the eager evaluation
of nested function calls corresponds to and-parallel evaluation of conjoined
relation calls.
This paper is a tutorial introduction and semi-formal definition of
PARLOG. It assumes familiarity with the general concepts of logic programming.